package com.ssy.lingxi.logistics.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.logistics.api.dto.request.CommonIdRequest;
import com.ssy.lingxi.logistics.model.request.CommonStatusRequest;
import com.ssy.lingxi.logistics.model.request.CompanyRequest;
import com.ssy.lingxi.logistics.model.response.CompanyListResponse;
import com.ssy.lingxi.logistics.model.response.CompanyResponse;

/**
 * 物流公司服务类
 *
 * @author yzc
 * @version 2.0.0
 * @date 2020/7/10
 */
public interface ICompanyService {
    /**
     * 物流公司分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<CompanyListResponse>> pageCompany(PageVO request, UserLoginCacheDTO loginUser);

    /**
     * 物流公司查询
     * @param id 主键id
     * @return 返回结果
     */
    Wrapper<CompanyResponse> getCompany(Long id);

    /**
     * 物流公司添加
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> addCompany(CompanyRequest request, UserLoginCacheDTO loginUser);

    /**
     * 物流公司修改
     * @param request 接口参数
     */
    Wrapper<Void> updateCompany(CompanyRequest request, UserLoginCacheDTO loginUser);

    /**
     * 物流公司停用/启用
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> updateStatusCompany(CommonStatusRequest request, UserLoginCacheDTO loginUser);

    /**
     * 物流公司删除
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> deleteCompany(CommonIdRequest request, UserLoginCacheDTO loginUser);
}
